const joi = require('joi')

// 所有的验证规则必须先指定数据类型
const schema = {
  uname: joi
    .string()
    // 这个必填默认是false，也就是可以省略，如果要必填一定要加上这个验证
    .required()
    .min(2)
    .max(20),
  email: joi
    .string()
    .required()
    .email(),
  pwd: joi
    .string()
    .required()
    .min(6)
    .max(16),
  role: joi
    .string()
    .required()
    .valid('normal', 'admin'),
  status: joi
    .number()
    .required()
    // 存在隐式转换，字符串的'0'和'1'也可以通过验证
    .valid(0, 1)
}

const user = { uname: 'zs', email: 'zs@itcast.cn', pwd: 'qwe123', role: 'normal', status: 3 }

;(async () => {
  // 验证通过则返回true，验证不通过抛错，进入catch方法
  // const isOk = await joi.validate(user, schema).catch(err => {
  //   console.log(err.message)
  //   return false
  // })
  const isOk = await joi.validate(user, schema).catch(err => false)

  if (!isOk) {
    console.log('hehele')
    return
  }

  console.log('pass')
})()
